import Vue from 'vue'
import axios from 'axios'
import router from '@/router'

/* 配置axios请求的默认前缀 */
axios.defaults.baseURL = process.env.VUE_APP_BASE_PATH
/* 配置axios的请求拦截器 */
axios.interceptors.request.use(request => {
  request.headers.token = Vue.prototype.$cookies.get('token')
  return request
})

/* 配置axios响应拦截器 */
axios.interceptors.response.use(response => {
  if (response.status === 200) {
    const data = response.data
    if (data.code === 200) {
      return Promise.resolve(data?.data)
    } else if (data.code === 401) {
      /* 业务失败的统一处理 */
      Vue.prototype.$alert(data.msg, { type: 'error' }).then(() => {
        router.replace('/').then().catch(e => e)
      })
    } else {
      /* 业务失败的统一处理 */
      Vue.prototype.$alert(data.msg, { type: 'error' })
      return Promise.reject(data.msg)
    }
  } else {
    /* 请求异常时的处理 */
    Vue.prototype.$alert(response.statusText, { type: 'error' })
    return Promise.reject(response.statusText)
  }
})
/* 挂载配置后的axios到Vue中 */
Vue.prototype.$axios = axios
